<template>
  <div id="map"></div>
</template>
 
<script>
//设置安全密钥
window._AMapSecurityConfig = {
  securityJsCode: "e193128f2c786e3698e14c9e2f27b3fb",
};

import AMapLoader from "@amap/amap-jsapi-loader";

export default {
  name: "Mapview",
  props: {
    location: {
      type: String,
      required: true,
    },
  },
  data() {
    return {
      map: null, //高德实例
      marker: null, //点标记 Marker
      geocoder: null, //地理编码
    };
  },
  mounted() {
    this.initMap(this.location);
  },
  beforeDestroy() {
    console.log("地图销毁了");
    this.map.destroy();
  },
  methods: {
    //初始化
    initMap(location) {
      console.log(location);
      AMapLoader.load({
        key: "b962e4ed1877953c33d54e6dd655fdfb", // 申请好的Web端开发者Key，首次调用 load 时必填
        version: "2.0", // 指定要加载的 JSAPI 的版本，缺省时默认为 1.4.15
        plugins: ["AMap.Geocoder"],
      })
        .then((AMap) => {
          // 实例化
          this.map = new AMap.Map("map", {
            pitch: 75, // 地图俯仰角度，有效范围 0 度- 83 度
            viewMode: "3D", //是否为3D地图模式
            zoom: 16, //初始化地图级别
            center: [106.583541, 29.563475], //初始化地图中心点位置
            resizeEnable: true,
          });

          // 当前点标记
          // const curMarker = new AMap.Marker();

          // 自动获取用户IP，返回当前城市
          // const citysearch = new AMap.CitySearch();
          // citysearch.getLocalCity((status, result) => {
          //   if (status === "complete" && result.info === "OK") {
          //     console.log(result);
          //     const lnglat = result.bounds.northEast;
          //     curMarker.setPosition(lnglat);
          //     this.map.add(curMarker); // 将创建的点标记添加到已有的地图实例
          //     this.map.setFitView(curMarker);
          //   }
          // });

          // 地理编码插件
          this.geocoder = new AMap.Geocoder({
            // city: "010", //城市设为北京，默认：“全国”
            radius: 1000, //范围，默认：500
          });

          const targetMarker = new AMap.Marker();

          this.geocoder.getLocation(location, (status, result) => {
            if (status === "complete" && result.geocodes.length) {
              // console.log(result);
              const lnglat = result.geocodes[0].location;
              // console.log(lnglat);
              targetMarker.setPosition(lnglat);
              this.map.add(targetMarker); // 将创建的点标记添加到已有的地图实例
              this.map.setFitView(targetMarker);
            } else {
              console.log("查询位置失败");
            }
          });
        })
        .catch((e) => {
          console.log(e);
        });
    },
  },
};
</script>
 
<style lang="less" scoped>
#map {
  padding: 0px;
  margin: 0px;
  width: 100%;
  height: 100%;
}
</style>